package BLForEntities;

import Entities.BasisReis;
import Entities.Betaalwijze;
import Entities.Boeking;
import Entities.Klant;
import Interfaces.BoekingInterface;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;


public class BLBoeking implements BoekingInterface {
  
      private Connectie connectie;
    EntityManager em = null;
    EntityTransaction et = null;

    public BLBoeking() {
        this.beginConnectie();
    }

    private void beginConnectie() {

        connectie = new Connectie();

        if (em == null) {
            em = connectie.getConnectie();
        }

    }
    
    @Override
    public void  persistReis(Boeking boeking){
         this.beginConnectie();
  
            et = em.getTransaction();
            et.begin();
            em.persist(boeking);
            et.commit();
    }
    
    
    @Override
    public BasisReis basisReis (int id) {
        
        Query q = em.createNamedQuery("BasisReis.getBasisReisById");
        q.setParameter("id", id);
        BasisReis basisreis = (BasisReis) q.getSingleResult();
        
        return basisreis;
        
    }
    
    @Override
    public List<Betaalwijze> betaalwijzen() {
        return em.createNamedQuery("Betaalwijze.getAllBetaalwijze").getResultList();
    }
    
    @Override
    public List<Boeking> getBoekingenByKlant(Klant klant){
       
        Query q = em.createNamedQuery("Boeking.getAllBoekingenByKlant");
        q.setParameter("klant", klant);
        List<Boeking> boekingen = (List<Boeking>) q.getResultList();
        
        return boekingen;
        
        
    }
    
     @Override
     public Boeking getBoekingById(int id){
         
        Query q = em.createNamedQuery("Boeking.getBoekingById");
        q.setParameter("id", id);
        Boeking boeking = (Boeking) q.getSingleResult();
        
        return boeking;
        
     }
}
